64a948fcd9156a8f5dc8a50d8c3e4482f3644c38,sketches/src/main/java/com/yahoo/sketches/theta/UnionImpl.java,UnionImpl,getResult,#boolean#Memory#,124
Before Change
long[] gadgetCache = gadget_.getCache(); //if direct a copy, otherwise a reference
long gNewThetaLong = gadgetThetaLong;
if (gadgetCurCount > k) {
if (!gadget_.isDirect()) {
gadgetCache = new long[arrLongs];
System.arraycopy(gadget_.getCache(), 0, gadgetCache, 0, arrLongs);
}
After Change
final int gadgetCurCount = gadget_.getRetainedEntries(true);
final int k = 1 << gadget_.getLgNomLongs();
final long[] gadgetCacheCopy =
(gadget_.isDirect()) ? gadget_.getCache() : gadget_.getCache().clone();
//Pull back to k
final long curGadgetThetaLong = gadget_.getThetaLong();
final long adjGadgetThetaLong = (gadgetCurCount > k)
? selectExcludingZeros(gadgetCacheCopy, gadgetCurCount, k + 1) : curGadgetThetaLong;
//Finalize Theta and curCount